﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AdministracionCooperativa.entidades;
using AdministracionCooperativa.Controlador;

namespace AdministracionCooperativa.Formularios
{
    public partial class Frmch : Form
    {
        private catcho chofer = null;
        public Frmch()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            var nombres = ControladorChofer.FiltrarChoferes(txtBusqueda.Text);
            if (nombres.Count==0)
            {
                MessageBox.Show("No se encontraron Datos");
                IniciarControles();
            }
            else
            {
                listaNombres.Rows.Clear();
                foreach (var item in nombres)
                {
                    listaNombres.Rows.Add(item.Key, item.Value);
                }
            }
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            ValidaLetras(sender, e);
            if (e.KeyChar == Convert.ToChar(Keys.Enter) && !string.IsNullOrWhiteSpace(txtBusqueda.Text))
                button2.PerformClick();
        }
        private void ValidaLetras(object sender, KeyPressEventArgs e)
        {
            if (!(char.IsControl(e.KeyChar) | char.IsLetter(e.KeyChar)))
                e.Handled = true;
        }

        private void listaNombres_SelectionChanged(object sender, EventArgs e)
        {
            if (listaNombres.SelectedRows.Count > 0)
            {
                ControladorChofer.EstableceDatosChofer(listaNombres.CurrentRow.Cells[0].Value.ToString());
                chofer = ControladorChofer.GetChoferById(listaNombres.CurrentRow.Cells[0].Value.ToString());
                txtImss.Text = chofer.SEGSOC;
                txtImss.Tag = ControladorChofer.DatosChofer;
                txtNombre.Text = ControladorChofer.DatosChofer.NOMBRE;
                txtPaterno.Text = ControladorChofer.DatosChofer.PATERNO;
                txtMaterno.Text = ControladorChofer.DatosChofer.MATERNO;
                txtDireccion.Text = ControladorChofer.DatosChofer.DIRECCION;
                txtTelefono.Text = ControladorChofer.DatosChofer.TELEFONO;
                txtLicencia.Text = chofer.LICENCIA;
                dtdVecimiento.Value = (DateTime)chofer.FECVLI;
                chkActivo.Checked = (bool)chofer.ACTIVO;
                cmbTipo.SelectedIndex = (chofer.TIPO.Equals("C")) ? 0 : 1;
                HabilitarControles();
                txtImss.Enabled = false;
            }
        }

        private void listaNombres_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            IniciarControles();
            HabilitarControles();
            chkActivo.Checked = true;
            chkActivo.Enabled = false;
            btnEliminar.Enabled = false;
            txtImss.Focus();
            chofer = null;
        }
        private void IniciarControles()
        {
            grupoDetalle.Enabled = false;
            txtImss.Enabled = false;
            foreach (var item in this.Controls["grupoDetalle"].Controls)
            {
                if (item is TextBox)
                {
                    var c = (TextBox)item;
                    c.Text = string.Empty;
                }else
                if (item is ComboBox)
                {
                    var c = (ComboBox)item;
                    c.Text = string.Empty;
                }
            }
            btnEliminar.Enabled = false;
            btnGuardar.Enabled = false;
            chkActivo.Checked = false;
            listaNombres.Rows.Clear();
            txtBusqueda.Text = string.Empty;
            txtBusqueda.Focus();
            dtdVecimiento.Value = DateTime.Today;
            cmbTipo.SelectedIndex = 0;
            txtImss.Clear();
        }

        private void HabilitarControles()
        {
            grupoDetalle.Enabled = true;
            txtImss.Enabled = true;
            btnEliminar.Enabled = true;
            btnGuardar.Enabled = true;
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            var resultado=ControladorChofer.EliminarChoferById(txtImss.Text);
            if (!string.IsNullOrWhiteSpace(resultado))
                MessageBox.Show("Chofer con Seguro Social {0}, fue eliminado", resultado);
            IniciarControles();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            var mensaje = ValidarControles();
            if (mensaje.Length > 0)
                MessageBox.Show("Faltan capturar datos de: "+mensaje);
            else
            {
                GuardarDatos();
            }
            IniciarControles();
        }
        private void GuardarDatos()
        {
            catnom nombre = null;
            if (chofer == null)
            {
                chofer = new catcho();
                nombre = new catnom();
            }
            else
            nombre = (catnom)txtImss.Tag;
            chofer.SEGSOC = txtImss.Text;
            nombre.CVEELEC = txtImss.Text;
            nombre.NOMBRE=txtNombre.Text;
            nombre.PATERNO = txtPaterno.Text;
            nombre.MATERNO = txtMaterno.Text;
            nombre.DIRECCION = txtDireccion.Text;
            nombre.TELEFONO = txtTelefono.Text;
            chofer.LICENCIA=txtLicencia.Text;
            chofer.FECVLI = dtdVecimiento.Value;
            chofer.TIPO=(cmbTipo.SelectedIndex==0) ? "C" : "P";
            chofer.ACTIVO = chkActivo.Checked;
            var resultado = ControladorChofer.Guardar(nombre, chofer);
            if (!string.IsNullOrWhiteSpace(resultado))
                MessageBox.Show("Chofer con Seguro Social "+resultado+", Agregado o Modificado");
        }
        private void txtImss_Leave(object sender, EventArgs e)
        {
            if (ControladorChofer.GetChoferById(txtImss.Text) != null)
                MessageBox.Show("Se encontro un numero de seguro social.Verifique...");
        }
        private string ValidarControles()
        {
            string resultado = string.Empty;
            foreach (var item in this.Controls["grupoDetalle"].Controls)
            {
                if (item is TextBox)
                {
                    var c = (TextBox)item;
                    var nombre = c.Name.Replace("txt", "");
                    if (string.IsNullOrWhiteSpace(c.Text) && nombre.ToUpper() != "DIRECCION" && nombre.ToUpper() != "TELEFONO")
                    {
                        resultado += (resultado.Length == 0) ? c.Name.Replace("txt", "") : ", " + c.Name.Replace("txt", "");
                    }
                }
            }
            if (!txtImss.MaskFull)
                resultado += (resultado.Length == 0) ? "IMSS INCOMPLETO" : ", IMSS INCOMPLETO";
            return resultado;
        }

        private void txtBusqueda_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtBusqueda_Click(object sender, EventArgs e)
        {
            IniciarControles();
        }

        private void button7_Click(object sender, EventArgs e)
        {
            Application.OpenForms["Frmch"].Close();
        }
    }
}
